#ifndef MPU6050_H_
#define MPU6050_H_

#include "stm32f10x.h"

// MPU6050数据结构体
typedef struct
{
    int16_t accX, accY, accZ;                // 加速度计数据
    int16_t gyroX, gyroY, gyroZ;             // 陀螺仪数据
    int16_t temp;                            // 温度数据
    int16_t accBiasX, accBiasY, accBiasZ;    // 加速度计零偏
    int16_t gyroBiasX, gyroBiasY, gyroBiasZ; // 陀螺仪零偏
} _st_Mpu;

// MPU6050浮点数据结构体
typedef struct
{
    float accX, accY, accZ;    // 加速度计数据
    float temp;                // 温度数据
    float gyroX, gyroY, gyroZ; // 陀螺仪数据
} _st_Mpu_F;

void mpu6050_init(void);
uint8_t mpu6050_getData(void);
void mpu6050_applyBias(void);
void mpu6050_getData_F(void);

void mpu6050_fliterInit(void);
void mpu6050_fliterUpdate(void);

uint8_t mpu6050_calibrate(void);
void mpu6050_setBias(int16_t accBiasX, int16_t accBiasY, int16_t accBiasZ,
                     int16_t gyroBiasX, int16_t gyroBiasY, int16_t gyroBiasZ);

#endif /*MPU6050_H_*/
